package com.doitedu.core2

import com.doitedu.utils.SparkUtil
import org.apache.spark.HashPartitioner
import org.apache.spark.rdd.RDD

/**
 * @Date: 22.7.7 
 * @Author: HANGGE
 * @qq: 598196583
 * @Tips: 学大数据 ,到多易教育
 * @Description:
 */
object C09_查看依赖 {
  def main(args: Array[String]): Unit = {
    val sc = SparkUtil.getSparkContext("依赖")
    val rdd1 = sc.textFile("data/word.txt")
    val rdd2 = rdd1.flatMap(_.split("\\s+"))
    val rdd3 = rdd2.map((_, 1))
    //对数据进行分区
    val rddx = rdd3.partitionBy(new HashPartitioner(rdd3.getNumPartitions))
   //-----------阶段-------------------------------------
    val rdd4 = rddx.reduceByKey(_ + _)  //ShuffledRDD
    // map算子会清除前面RDD分分区器
    val rdd5: RDD[(String, Int)] = rdd4.map(tp => ((tp._1.toUpperCase(), tp._2)))
   // 所以会再次shuffle
    val rdd6 = rdd5.groupByKey()
    println(rdd6.toDebugString)
  }
}
